package com.hcryan.djm.feign;

import com.hcryan.djm.config.BaiduMapFeignConfig;
import com.hcryan.djm.feign.response.DrivingResp;
import com.hcryan.djm.feign.response.LocationSearchResp;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * @author ryanwdj
 * @since 2025/2/21
 */

@FeignClient(name = "baiduMapApi", url = "https://api.map.baidu.com", configuration = BaiduMapFeignConfig.class)
public interface BaiduMapApi {

    /**
     * <a href="https://lbsyun.baidu.com/faq/api?title=webapi/guide/webservice-placeapi/district">地点检索 </a>
     * @param ak 服务端密钥
     * @param query 检索关键字， 例如天安门、美食
     * @param region 检索行政区划区域
     * @param output json/xml
     * @return 结果
     */
    @GetMapping("/place/v2/search")
    LocationSearchResp locationSearch(
            @RequestParam("ak") String ak,
            @RequestParam("query") String query,
            @RequestParam("region") String region,
            @RequestParam("output") String output);

    /**
     * 驾车路线 ： 起点～终点
     * @param ak 服务端密钥
     * @param origin 起点经纬度，格式为：纬度,经度；小数点后不超过6位，40.056878,116.30815
     * @param destination 终点经纬度，格式为：纬度,经度；小数点后不超过6位，40.056878,116.30815
     * @return 结果
     */
    @GetMapping("/directionlite/v1/driving")
    DrivingResp drivingSearch(
            @RequestParam("ak") String ak,
            @RequestParam("origin") String origin,
            @RequestParam("destination") String destination

    );

    /**
     * 驾车路线 ： 起点 - 途经点 - 终点
     * @param ak 服务端密钥
     * @param origin 起点经纬度，格式为：纬度,经度；小数点后不超过6位，40.056878,116.30815
     * @param waypoints 支持10个以内的有序途经点。多个途经点坐标按顺序以英文竖线符号分隔，示例： 40.465,116.314|40.232,116.352|40.121,116.453
     * @param destination 终点经纬度，格式为：纬度,经度；小数点后不超过6位，40.056878,116.30815
     * @return 结果
     */
    @GetMapping("/directionlite/v1/driving")
    DrivingResp drivingSearch(
            @RequestParam("ak") String ak,
            @RequestParam("origin") String origin,
            @RequestParam("waypoints") String waypoints,
            @RequestParam("destination") String destination

    );
}
